-- PATTERN 4+4
;WITH cte AS
(
SELECT	rifOfferta AS rifOfferta_Orig,
        PATINDEX( '%[0-9][0-9][0-9][0-9]-[2][0][0-9][0-9]%', rifOfferta)  AS iniziobarra,
        PATINDEX( '%[0-9][0-9][0-9][0-9]/[2][0][0-9][0-9]%', rifOfferta)  AS inizioslash,
        CASE WHEN PATINDEX( '%[0-9][0-9][0-9][0-9]-[2][0][0-9][0-9]%', rifOfferta) > 0
             THEN PATINDEX( '%[0-9][0-9][0-9][0-9]-[2][0][0-9][0-9]%', rifOfferta)
             ELSE PATINDEX( '%[0-9][0-9][0-9][0-9]/[2][0][0-9][0-9]%', rifOfferta)
        END AS inizio,
        urlOfferta AS urlOfferta_Orig,
    *
FROM   DatiCommessa
WHERE  rifOfferta IS NOT NULL
AND ISNULL(urlOfferta,'') = '?'
AND (PATINDEX( '%[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]%', rifOfferta) = 0      -- escludo pattern 5+4
   AND PATINDEX( '%[0-9][0-9][0-9][0-9][0-9]/[0-9][0-9][0-9][0-9]%', rifOfferta) = 0 )
AND ( PATINDEX( '%[0-9][0-9][0-9][0-9]-[2][0][0-9][0-9]%', rifOfferta) > 0
   OR PATINDEX( '%[0-9][0-9][0-9][0-9]/[2][0][0-9][0-9]%', rifOfferta) > 0 )
)
,cte2 AS
(
SELECT  RIGHT(rifOfferta, LEN(rifOfferta)-inizio-8 ) As len1,
        PATINDEX( '%[0-9][0-9][0-9][0-9]-[2][0][0-9][0-9]%', RIGHT(rifOfferta, (LEN(rifOfferta)-inizio-8) ) ) AS secondabarra,
        PATINDEX( '%[0-9][0-9][0-9][0-9]/[2][0][0-9][0-9]%', RIGHT(rifOfferta, (LEN(rifOfferta)-inizio-8) ) ) AS secondoslash
        ,*
FROM cte
)
-- SELECT SUBSTRING(rifOfferta_Orig, inizio, 9 ) AS NewurlOfferta,cte2.*
UPDATE DatiCommessa
SET urlOfferta = SUBSTRING(rifOfferta_Orig, inizio, 9 )
FROM DatiCommessa AS dc
INNER JOIN cte2 ON dc.idxFase = cte2.idxFase
-- WHERE ( iniziobarra = 0 OR inizioslash = 0 ) -- se ho pi codici non lo scrivo ( quale prendo ? )
WHERE secondabarra = 0 AND secondoslash = 0


-- select per modifica di quelli non modificati
SELECT * FROM DatiCommessa
WHERE AnnoCommessa = 2013
AND urlOfferta = '?'